package componentes;

import java.awt.Color;
import java.awt.Graphics;

/**
 * 
 * Classe Projetil.java que representa o prjétil que será lançado do avião, este
 * será circular e contém as coordenadas de sua posição e o tamanho de seu raio
 * 
 * @desc Projeto BombarJ
 * @author Simone Carneiro Streitenberger 11888 CCO2003
 * @author Thiago Nascimento Comicio 11889 CCO2003
 * @professor Edison de Jesus
 * @disciplina Computação Gráfica 2 - CCO812
 * 
 */
public class Projetil {

	private Ponto central;

	private int raio;

	/**
	 * 
	 * Construtor da classe Projetil.java
	 * 
	 * @param central
	 *            Ponto que representa o centro do projétil circular
	 * 
	 */
	public Projetil(Ponto central) {
		// seta o novo valor para o ponto central
		this.central = new Ponto(central);

		// raio fixo em 5 pixels
		this.raio = 5;
	}

	/**
	 * 
	 * Método que tem por função setar a nova posição central do rpojétil,
	 * utilizada para movimentá-lo
	 * 
	 * @param x
	 *            Nova abcissa do ponto central do projétil.
	 * @param y
	 *            Nova ordeanada do ponto central do projétil.
	 * 
	 */
	public void setPosicao(int x, int y) {
		central.setX(x);
		central.setY(y);
	}

	/**
	 * 
	 * Método que tem por função deslocar o projétil
	 * 
	 * @param x
	 *            Quantidade de pixels a ser deslocado de forma horizontal.
	 * @param y
	 *            Quantidade de pixels a ser deslocado de forma vertical.
	 * 
	 */
	public void desloca(int x, int y) {
		central.setX(central.getX() + x);
		central.setY(central.getY() + y);
	}

	/**
	 * 
	 * Método que tem por função pintar o projétil na tela
	 * 
	 * @param desenho
	 *            Objeto do painel onde será pintado o projétil.
	 * 
	 */
	public void pintaProjetil(Graphics desenho) {

		// é verificado se existe um painel para se pintar o projétil
		if (desenho == null)
			return;

		// é setada a cor do projétil, no caso sempre preta
		desenho.setColor(Color.BLACK);

		// constrói o projétil que nada mais é que um círculo
		if (central != null)
			desenho.fillOval(central.getX() - raio, central.getY() - raio,
					2 * raio, 2 * raio);

	}

	/**
	 * 
	 * Método que retorna o valor do atributo central.
	 * 
	 * @return O atributo que representa o ponto central.
	 * 
	 */
	public Ponto getCentral() {
		return central;
	}

	/**
	 * 
	 * Método que seta o atributo central para um novo valor.
	 * 
	 * @param central
	 *            O atributo que representa o ponto central central é setado.
	 * 
	 */
	public void setCentral(Ponto central) {
		this.central = central;
	}

	/**
	 * 
	 * Método que retorna o valor do atributo raio.
	 * 
	 * @return O atributo raio.
	 * 
	 */
	public int getRaio() {
		return raio;
	}

	/**
	 * 
	 * Método que seta o atributo raio para um novo valor.
	 * 
	 * @param raio
	 *            O atributo raio é setado.
	 * 
	 */
	public void setRaio(int raio) {
		this.raio = raio;
	}

}
